IE8 下的诡异bug

IE8 下的诡异bug

IE8 下的诡异bug

在 ie8 下,若定位元素在基准元素的前面,并且不是body的第一个元素时, 则基准元素会出现未 reflow 而导致 margin-top 失效的问题, 所以尽量避免定位元素在基准元素相邻并在之前的情况。

下面的演示请在 IE8 下查看,定位后请将鼠标移到元素 B 上。


<style>
    * {
        margin:0;
        padding:0;
    }
    #a1 {
        border:7px solid green;
    }
    #b1 {
        margin:60px;
        border:10px solid #777;
        padding:30px;
        background-color:red;
    }
</style>

<div>貌似无辜一</div>
<div>貌似无辜二</div>
<div id="a1" class="elem1">目标元素a1</div>
<div id="b1" class="elem2">基准元素b1</div>

<script>

var Position = FNX.include('position/position');

$(function() {
    var a1 = $('#a1'),
        b1 = $('#b1');

    a1[0].style.position = 'absolute';
    // 在 ie8 下,若定位元素在基准元素的前面
    // 则基准元素会出现未 reflow 而导致 margin-top 失效的问题
    // 所以尽量避免定位元素在基准元素相邻并在之前的情况
    Position.pin(a1, b1);
});
</script>